// =====================================================================================
// 
//       Filename:  Casella.cpp
// 
//    Description:  Implementazione della classe casella
// 
//         Author:  Davide Poletti , davide.pole@gmail.com
//          		Paolo Pigato , p.pigato@hotmail.com	
//        Company:  P&P.cpp
// 
// =====================================================================================
#include "Casella.hh"

Casella::Casella()
{
	_mia = 0;
	_sparata = 0;
    _nave_qui = 0;
}

Casella::Casella(bool mia)
{	
	_mia = mia;
	_sparata = 0;
    _nave_qui = 0;
}

Casella::~Casella()
{;}

int Casella::subisci_sparo()
{
    if (_sparata){
        return 0;
    } else {
	_sparata = true;
        if (_nave_qui) {
            _nave_qui->colpisci();
            if (_nave_qui->affondata()){
                return 3;
            } else {
                return 2;
            }
        } else {
            return 1;
        }
    }
}

void Casella::punta_nave(Nave* nave)
{
    _nave_qui = nave;
}

std::ostream& operator<<(std::ostream& os, const Casella& c)
{
    if (c._mia) {
        if (c._nave_qui) {
            if (c._nave_qui->affondata()) {
                os << "+";	
            } else {
                if (c._sparata) {
                    os << "*";	
                } else {
                    os << "H";									
                }
            }
        } else {
		if (c._sparata) {
                    os << "§";	
                } else {
                    os << "~";											
                }
        }
    }else{
        if (c._sparata) {
            if (c._nave_qui) {
                if (c._nave_qui->affondata()) {
                    os << "+";	
                } else {
                    os << "*";	
                }
            } else {
                os << "§";
            }
        } else {
            os << ".";
        }
    }     
    return os;
}
